package cc.rengu.igas.route.facade;

import cc.rengu.igas.route.facade.request.*;
import cc.rengu.igas.route.facade.response.*;
import cc.rengu.igas.route.facade.result.Result;

/**
 * 智能路由提供的服务接口
 *
 * @author xionglz
 * @version 1.0
 * @date 2020-03-12
 */
public interface SmartRouteService {

    /**
     * 智能路由
     *
     * @param smartRouteRequest 智能路由请求参数
     * @return cc.rengu.igas.route.facade.result.Result<cc.rengu.igas.route.facade.Response.SmartRouteResponse>
     * @author xionglz
     * @date 2020-03-12
     **/
    Result<SmartRouteResponse> smartRouteChoice(SmartRouteRequest smartRouteRequest);

    /**
     * 对外付款
     *
     * @param intelligenceCreditRequest 对外付款请求
     * @return cc.rengu.igas.route.facade.result.Result<cc.rengu.igas.route.facade.response.ExternalPaymentResponse>
     * @author xionglz
     * @date 2020-04-26
     **/
    Result<IntelligenceCreditResponse> externalPayment(IntelligenceCreditRequest intelligenceCreditRequest);

    /**
     * 对外收款签约
     *
     * @param intelligencePaymentSignRequest 对外收款签约请求
     * @return cc.rengu.igas.route.facade.result.Result<cc.rengu.igas.route.facade.response.IntelligencePaymentSignResponse>
     * @author xionglz
     * @date 2020-04-29
     **/
    Result<IntelligencePaymentSignResponse> paymentSign(IntelligencePaymentSignRequest intelligencePaymentSignRequest);

    /**
     * 对外收款签约确认
     *
     * @param intelligencePaymentSignVerifyRequest 对外收款签约确认请求
     * @return cc.rengu.igas.route.facade.result.Result<cc.rengu.igas.route.facade.response.IntelligencePaymentSignVerifyResponse>
     * @author xionglz
     * @date 2020-04-29
     **/
    Result<IntelligencePaymentSignVerifyResponse> paymentSignVerify(IntelligencePaymentSignVerifyRequest intelligencePaymentSignVerifyRequest);

    /**
     * 对外收款
     *
     * @param intelligencePaymentRequest 对外收款请求即支付、代收等请求
     * @return Result<IntelligencePaymentResponse>
     * @author lizhangtao
     * @date 2020-04-29
     **/
    Result<IntelligencePaymentResponse> payment(IntelligencePaymentRequest intelligencePaymentRequest);

    /**
     * 对外收款确认
     *
     * @param intelligencePaymentVerifyRequest 对外收款请求即支付、代收等请求的确认
     * @return Result<IntelligencePaymentVerifyResponse>
     * @author lizhangtao
     * @date 2020-04-29
     **/
    Result<IntelligencePaymentVerifyResponse> paymentVerify(IntelligencePaymentVerifyRequest intelligencePaymentVerifyRequest);

    /**
     * 路由结果查询
     *
     * @param intelligenceResultQueryRequest 路由结果查询请求
     * @return Result<IntelligenceResultQueryResponse>
     */
    Result<IntelligenceResultQueryResponse> resultQuery(IntelligenceResultQueryRequest intelligenceResultQueryRequest);
}
